package com.example.servlet;


import com.example.Service.UserService;
import com.example.pojo.User;
import com.example.utils.RndImage;
import com.google.gson.Gson;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

@WebServlet(name = "NumServlet", value = "/NumServlet")
public class NumServlet extends HttpServlet {
    private String message;


    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        // 在 doGet/doPost 方法开头添加
        response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:5500");
// 例如前端地址是 http://127.0.0.1:5500，则写这个地址，不能用 *（否则无法携带 Cookie）
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type");
        response.setHeader("Access-Control-Allow-Credentials", "true"); // 允许携带 Cookie
        // 2. 创建/获取 Session（关键：首次请求会生成新 Session）
        HttpSession session = request.getSession();
        String sessionId = session.getId(); // 获取当前 Session ID

        // 3. 强制设置 JSESSIONID Cookie 的 SameSite=None（无论是否首次请求）
        // 构建包含 SameSite 的 Cookie 头
        String cookieHeader = "JSESSIONID=" + sessionId +
                "; Path=/servletdemo" +  // 注意：替换为你的项目上下文路径（如/servletdemo）
                "; HttpOnly" +
                "; SameSite=None";
        // 本地 HTTP 测试可注释 Secure，生产环境 HTTPS 必须添加
         cookieHeader += "; Secure";

        // 覆盖默认的 Set-Cookie 头（关键：确保新生成的 Cookie 包含 SameSite）
        response.setHeader("Set-Cookie", cookieHeader);
    String num = RndImage.random();
        session.setAttribute("checkNum",num);
    response.setContentType("image/jpeg");
        System.out.println("Num：" + num);
        System.out.println("NumServlet 存入 Session 的验证码：" + session.getAttribute("checkNum"));
        RndImage.imageOut(num,response.getOutputStream(),100,40);
        System.out.println(session.getId());


    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    }

    public void destroy() {
    }
}

